package com.siam.package_rider.model.param;

import com.baomidou.mybatisplus.annotation.TableField;
import com.google.gson.annotations.SerializedName;
import com.siam.package_common.model.valid_group.ValidGroupOfAudit;
import lombok.Data;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.siam.package_rider.entity.TbRider;
import com.siam.package_common.entity.BaseParam;
import org.hibernate.validator.constraints.Range;
import org.springframework.web.multipart.MultipartFile;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * ---------------------------
 * 骑手表 (TbRiderParam)
 * ---------------------------
 * 作者：  高品
 * 时间：  2025-03-29 18:55:18
 * ---------------------------
 */
@Data
public class TbRiderParam extends BaseParam {

	/** 主键id */
	private Long id;

	/** 骑手等级ID */
	private Long levelId;

	/** 用户名 */
	private String username;

	/** 手机号 */
	private String mobile;

	/** 密码 */
	private String password;

	/** 密码盐值 */
	private String passwordSalt;

	/** 昵称(废弃字段) */
	private String nickname;

	/** 登陆次数 */
	private Integer loginCount;

	/** 邀请码 */
	private String inviteCode;

	/** 头像 */
	private String headImg;

	/** 权限 */
	private String roles;

	/** 性别 0=无 1=男 2=女 */
	private Integer sex;

	/** 电子邮箱 */
	private String email;

	/** 是否禁用 0=启用 1=禁用 */
	private Integer isDisabled;

	/** 是否删除 0=正常 1=删除 */
	private Integer isDeleted;

	/** 微信小程序openId */
	private String openId;

	/** 是否绑定微信 0=否 1=是 */
	private Integer isBindWx;

	/** 最后使用/进入小程序的时间 */
	private java.util.Date lastUseTime;

	/** 最后使用/进入小程序的定位地址 */
	private String lastUseAddress;

	/** 注册方式 1=微信一键登录 2=手机验证码 3=邀请注册 */
	private Integer registerWay;

	/** 微信公众号openId */
	private String wxPublicPlatformOpenId;

	/** 是否需要请求授权服务通知 0=否 1=是 */
	private Integer isRequestWxNotify;

	/** 上一次请求授权服务通知时间 */
	private java.util.Date lastRequestWxNotifyTime;

	/** 真实姓名 */
	private String realName;

	/** 支付密码 */
	private String paymentPassword;

	/** 支付密码盐值 */
	private String paymentPasswordSalt;

	/** 证件类型 */
	private String certificateType;

	/** 证件照片 */
	private String certificateImg;

	/** 身份证号码 */
	private String idCard;

	/** 身份证正面 */
	private String idCardFrontImg;

	/** 身份证反面 */
	private String idCardBackImg;

	/** 开户行 */
	private String openingBankAddress;

	/** 开户银行名称 */
	private String openingBankName;

	/** 银行卡号 */
	private String bankCard;

	/** 支付宝账号 */
	private String alipayAccount;

	/** 微信账号 */
	private String wechatAccount;

	/** 余额 */
	private BigDecimal balance;

	/** 可提现余额 */
	private BigDecimal withdrawableBalance;

	/** 冻结余额 */
	private BigDecimal frozenBalance;

	/** 用户下单冻结资金 */
	private BigDecimal orderFrozenBalance;

	/** 绑定的小程序用户id(用于发送微信公众号消息、进行余额提现) */
	private Integer memberId;

	/** 注册时间 */
	private java.util.Date createTime;

	/** 修改时间 */
	private java.util.Date updateTime;

	/** 最后登录时间 */
	private java.util.Date lastLoginTime;

	/** 年龄岁 */
	private Integer age;

	/** 是否缴纳保证金 */
	private Integer isBond;

	/** 保证金 */
	private BigDecimal bond;

	/** 紧急联系人  */
	private String urgentUsername;

	/** 紧急联系电话  */
	private String urgentTel;

	/** 住址 */
	private String address;

	/** 纬度 */
	private String lat;

	/** 经度 */
	private String lng;

	/** 审批状态（1=审核中，2=审核成功，3=审核失败） */
	private Integer auditStatus;

	/** 审批失败原因 */
	private String auditReason;

	/** 审批时间 */
	private java.util.Date auditTime;

	/** 是否上班 */
	private Boolean isWork;

	/** 服务分数 */
	private Integer score;

	/** 是否通过培训 */
	private Integer isTrain;

	/** 是否通过考试 */
	private Integer isTest;

	/** 健康证 */
	private String healthCertificate;

	/** 推荐人ID(预留) */
	private Integer recommendId;

	/** 1全职,2兼职(预留) */
	private Integer type;

	/** 小程序Id（预留） */
	private Integer uniacid;

	/** （预留） */
	private String registrationId;

	/** 绑定小程序用户ID（预留） */
	private Integer userId;


	//短信验证码
	private String mobileCode;

	//微信code
	private String code;

	//邀请者id
	private String inviterId;

	//开始日期
	private Date startCreateTime;

	//结束日期
	private Date endCreateTime;

	//文件
	private MultipartFile file;

	//旧密码
	private String oldPassword;

	//新密码
	private String newPassword;

	/**
	 * 审核状态(1=通过 2=不通过)
	 */
	@NotNull(message = "审核状态不能为空", groups = {ValidGroupOfAudit.class})
	@Range(min = 1, max = 2, message = "审核状态必须介于1~2之间", groups = {ValidGroupOfAudit.class})
	private Integer status;

	/**
	 * 审核意见(当审核状态为不通过时必填)
	 */
	private String opinion;
}